package cn.itcast.springAop;

import org.aspectj.lang.ProceedingJoinPoint;

/**
 * @author: cuisensen
 * data: 2018/6/13.
 * time: 22:01.
 */
public class MyAdvice {
    //前置通知
//		|-目标方法运行之前调用
    //后置通知(如果出现异常不会调用)
//		|-在目标方法运行之后调用
    //环绕通知
//		|-在目标方法之前和之后都调用
    //异常拦截通知
//		|-如果出现异常,就会调用
    //后置通知(无论是否出现 异常都会调用)
//		|-在目标方法运行之后调用
//----------------------------------------------------------------
    public void before(){
        System.out.println("前置通知");
    }
    public void after(){
        System.out.println("后置通知(方法出异常也会执行)");
    }
    public void afterReturning(){
        System.out.println("后置通知(正常结束)");
    }
    public Object round(ProceedingJoinPoint pj) throws Throwable {
        System.out.println("前置前置");
        Object proceed = pj.proceed();
        System.out.println("后置后置");
        return proceed;
    }
    public void afterException(){
        System.out.println("出事啦");
    }
}
